package com.creative.accountsdk.holder;

import android.graphics.Bitmap;
import android.text.TextUtils;
import android.util.Log;
import android.widget.ImageView;
import android.widget.TextView;

import com.creative.accountsdk.R;
import com.creative.accountsdk.UserData;
import com.creative.accountsdk.UserInfor;
import com.google.zxing.BarcodeFormat;
import com.google.zxing.EncodeHintType;
import com.google.zxing.WriterException;
import com.google.zxing.common.BitMatrix;
import com.google.zxing.qrcode.QRCodeWriter;

import java.util.Hashtable;

/**
 * Created by wang_qian on 2015/11/24.
 */
public class MyInviteCodeHolder  extends BaseHolder {

    /**
     * 二维码图片width、height
     */
    private int QR_WIDTH = 400, QR_HEIGHT = 400;

    private TextView   tvInviteCode;
    private ImageView  iv2Dcode;
    private UserInfor userInfor;


    @Override
    protected void initViews() {
        QR_WIDTH = (int)activity.getResources().getDimension(R.dimen.invitecode_width);
        QR_HEIGHT = (int)activity.getResources().getDimension(R.dimen.invitecode_height);

        tvInviteCode = (TextView)viewRoot.findViewById(R.id.tv_invitecode);
        iv2Dcode = (ImageView)viewRoot.findViewById(R.id.iv_2dcode);

        userInfor = UserData.getInstance().getUserinfor();
        tvInviteCode.setText(userInfor.qrcode);

        userInfor = UserData.getInstance().getUserinfor();

        if (!TextUtils.isEmpty(userInfor.qrcode)) {
            createQRImage(userInfor.qrcode);
        }


    }

    @Override
    public int getLayoutResID() {
        return R.layout.invitecode_layout;
    }

    /**
     * @方法功能说明: 生成二维码图片,实际使用时要初始化sweepIV,不然会报空指针错误
     * @作者:饶正勇
     * @时间:2013-4-18上午11:14:16
     * @参数: @param url 要转换的地址或字符串,可以是中文
     * @return void
     * @throws
     */
    //要转换的地址或字符串,可以是中文
    public void createQRImage(String url)
    {
        Log.i("CodeMainActivity", "url------" + url);
        try
        {
            //判断URL合法性
            if (url == null || "".equals(url) || url.length() < 1)
            {
                return;
            }
            Hashtable<EncodeHintType, String> hints = new Hashtable<EncodeHintType, String>();
            hints.put(EncodeHintType.CHARACTER_SET, "utf-8");
            //图像数据转换，使用了矩阵转换
            BitMatrix bitMatrix = new QRCodeWriter().encode(url, BarcodeFormat.QR_CODE, QR_WIDTH, QR_HEIGHT, hints);
            int[] pixels = new int[QR_WIDTH * QR_HEIGHT];
            //下面这里按照二维码的算法，逐个生成二维码的图片，
            //两个for循环是图片横列扫描的结果
            for (int y = 0; y < QR_HEIGHT; y++)
            {
                for (int x = 0; x < QR_WIDTH; x++)
                {
                    if (bitMatrix.get(x, y))
                    {
                        pixels[y * QR_WIDTH + x] = 0xff000000;
                    }
                    else
                    {
                        pixels[y * QR_WIDTH + x] = 0xffffffff;
                    }
                }
            }
            //生成二维码图片的格式，使用ARGB_8888
            Bitmap bitmap = Bitmap.createBitmap(QR_WIDTH, QR_HEIGHT, Bitmap.Config.ARGB_8888);
            bitmap.setPixels(pixels, 0, QR_WIDTH, 0, 0, QR_WIDTH, QR_HEIGHT);
            //显示到一个ImageView上面
            iv2Dcode.setImageBitmap(bitmap);
        }catch (WriterException e){
            e.printStackTrace();
        }
    }

}
